﻿using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

using Moq;
using Ninject;
using SMS.Domain.Entities;
using System.Collections.Generic;
using SMS.Domain.Abstract;
using SMS.WebUI.Controllers;
using System.Linq;

namespace SMS.UnitTests
{
    [TestClass]
    public class PagingRetoTest
    {
        Reto[] retos5 = new Reto[] {
                new Reto { RetoId=1, Descripcion="Primer reto de pruebas", FechaIns=DateTime.Parse("12/12/2011 23:23:00")},
                new Reto { RetoId=1, Descripcion="Segundo reto de pruebas", FechaIns=DateTime.Parse("12/12/2011 23:55:10")},
                new Reto { RetoId=1, Descripcion="Tercero reto de pruebas", FechaIns=DateTime.Parse("13/12/2011 13:03:00")},
                new Reto { RetoId=1, Descripcion="Cuarto reto de pruebas", FechaIns=DateTime.Parse("01/02/2012 15:35:00")},
                new Reto { RetoId=1, Descripcion="Quinto reto de pruebas", FechaIns=DateTime.Parse("21/03/2012 18:20:00")},
                };
        [TestMethod]
        public void Can_Paginate()
        {
            // Arrange
            // - create the mock repository
            Mock<IRetoRepository> mock = new Mock<IRetoRepository>();
            mock.Setup(m => m.Retos).Returns(retos5.AsQueryable());
            // create a controller and make the page size 3 items
            RetoController controller = new RetoController(mock.Object);
            controller.PageSize = 3;
            // Action
            IEnumerable<Reto> result = (IEnumerable<Reto>)controller.List(2).Model;
            // Assert
            Reto[] retoArray = result.ToArray();
            Assert.IsTrue(retoArray.Length == 2);
            Assert.AreEqual(retoArray[0].Descripcion, "Cuarto reto de pruebas");
            Assert.AreEqual(retoArray[1].Descripcion, "Quinto reto de pruebas");
        }
    }
}
